// 接口类型
export default {}
// 接口类型
// 定义数据类型，它包括了多个属性并且指定了属性的数据类型；
// 当我们使用时，传一个对象，这个对象 的属性，必须和定义的这个接口数据的对象的属性一致，
// 接口类型中的属性的类型，可以是任意的类型，如object,()=>, Array<>, string, number,....
// 如登录时的参数
interface User {
  username: string
  password: string
}

interface AjaxParams {
  url:string
  method:string
  data: User
}

// 定以params变量，类型为User这个接口类型
let params: User= {username:'qwqw',password:'123456'}

let obj:AjaxParams = {url:"/login", method:'post',data: params}

// axios({
//   url:"/login",
//   method:'post',
//   data: params
// })

axios(obj)

// 定义的axios函数，接收以给 obj 对象做参数,参数的类型是 AjaxParams 这个接口类型
function axios(obj:AjaxParams):Promise<string>{
  return Promise.resolve('')
}

// 在封装的api.js文件里面，可以确保login方法的参数，必须有 url, method, data 三个属性，同时 data 又是一个对象，必须有 username, password属性

export const login: (obj:AjaxParams)=> Promise<string>  = (obj:AjaxParams):Promise<string>=>{
  return axios(obj)
}
// 编译后，JS中，并没有包括接口类型的代码的定义；
// TS中的接口类型，只是为有结构的数据，做类型约束的，实际运行时，没有意义。